linux 部署微服务版本

部署须知

本文档基于 PIGX 服务 2000+ 企业客户实践总结,请严格按照步骤执行,确保网络安全配置正确。

初始化 ECS

购买 ECS

建议直接访问阿里云 ECS 官网进行购买,无需关注官方活动,因为官方活动并不一定会更便宜。【选择按量付费】

推荐配置清单

配置项规格
付费类型按量付费
实例4vCPU/16GiB/Intel 处理器
镜像CentOS 8.5 64 位
系统盘100GB
公网 IP分配
带宽计费模式按使用流量
带宽峰值100Mbps

初始化 CentOS8

一键安装

该脚本将自动配置 CentOS 8 镜像源并安装 Docker 环境,为后续部署做准备。

# 初始化并安装 Docker
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

安装 JDK 17

# 下载 Zulu JDK 17
wget https://cdn.azul.com/zulu/bin/zulu17.44.15-ca-jdk17.0.8-linux.x86_64.rpm

# 安装 JDK
rpm -ivh zulu17.44.15-ca-jdk17.0.8-linux.x86_64.rpm

# 验证安装
java -version

# 安装配套字体库(用于 PDF、图片生成等场景)
yum install -y fontconfig mkfontscale

安装 MySQL 8

容器化部署

使用 Docker 安装 MySQL 可以避免环境差异导致的兼容性问题,确保部署一致性。

# 创建数据和配置目录
mkdir -p /data/mysql/data /data/mysql/conf

# 启动 MySQL 容器
docker run -d --name pigx-mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_HOST="%" \
  -e MYSQL_ROOT_PASSWORD=root \
  --restart unless-stopped \
  -v /data/mysql/data:/var/lib/mysql \
  -v /data/mysql/conf:/etc/mysql/conf.d \
  registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/mysql-server:8.4.4 \
  --lower_case_table_names=1

安装 Redis

# 启动 Redis 容器
docker run -d --name redis-server \
  -p 6379:6379 \
  --restart unless-stopped \
  registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis

安装 NGINX

# 创建 Nginx 软件源配置文件
vim /etc/yum.repos.d/nginx.repo

在文件中写入以下内容:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安装 Nginx:

# 安装 yum 工具
yum install -y yum-utils

# 启用 mainline 版本
yum-config-manager --enable nginx-mainline

# 安装 Nginx
yum install -y nginx

配置 hosts

域名解析

配置本地 hosts 映射,使服务间可通过主机名相互访问,简化配置管理。

# 编辑 hosts 文件
vim /etc/hosts

在文件中添加以下内容:

127.0.0.1 pigx-register
127.0.0.1 pigx-gateway
127.0.0.1 pigx-redis
127.0.0.1 pigx-mysql
127.0.0.1 pigx-sentinel
127.0.0.1 pigx-xxl
127.0.0.1 pigx-seata

验证配置:

# 测试域名解析是否生效
ping pigx-register

部署 PIGX

准备构建产物

打包规范

务必在项目根目录使用 Maven 命令行打包,不要使用 IDEA 图形界面打包。 IDEA 打包可能存在环境配置问题,导致不可预期的错误,建议使用标准化构建流程。

1. 后端服务打包

在 PIGX 项目根目录执行以下命令:

# 微服务模式打包
mvn clean install -Pcloud

2. 前端项目构建

在 pigx-ui 前端项目根目录执行:

# 生产环境构建
npm run build

初始化数据库

执行顺序

请严格按照序号顺序执行 SQL 脚本,确保数据库表结构和基础数据正确初始化。

pigx/db/ 目录下依次执行以下 SQL 脚本:

source 1schema.sql
source 2pigxx.sql
source 3pigxx_ac.sql
source 4pigxx_job.sql
source 5pigxx_mp.sql
source 6pigxx_config.sql
source 7pigxx_pay.sql
source 8pigxx_codegen.sql

启动微服务

启动顺序

必须先启动注册中心 pigx-register,等待服务正常后再依次启动其他服务。

按以下顺序启动各微服务:

# 1. 启动注册中心(Nacos)
nohup java -Dfile.encoding=utf-8 -jar pigx-register.jar > /dev/null 2>&1 &

# 2. 启动监控中心(Spring Boot Admin)
nohup java -Dfile.encoding=utf-8 -jar pigx-monitor.jar > /dev/null 2>&1 &

# 3. 启动网关服务
nohup java -Dfile.encoding=utf-8 -jar pigx-gateway.jar > /dev/null 2>&1 &

# 4. 启动认证服务
nohup java -Dfile.encoding=utf-8 -jar pigx-auth.jar > /dev/null 2>&1 &

# 5. 启动用户权限管理服务
nohup java -Dfile.encoding=utf-8 -jar pigx-upms-biz.jar > /dev/null 2>&1 &

部署前端应用

# 创建前端文件目录并复制构建产物
mkdir -p /data/pigx-ui && cp -r dist/* /data/pigx-ui

# 删除默认配置文件
cd /etc/nginx/conf.d && rm -f default.conf

# 创建 PIGX 配置文件
vim pigx.conf

pigx.conf 中写入以下配置:

server {
  listen 80;
  server_name localhost;

  # Gzip 压缩配置
  gzip on;
  gzip_static on;
  gzip_min_length 1k;
  gzip_comp_level 4;
  gzip_proxied any;
  gzip_types text/plain text/xml text/css;
  gzip_vary on;
  gzip_disable "MSIE [1-6].(?!.*SV1)";

  # 前端静态资源目录
  root /data/pigx-ui/;

  # API 请求代理到网关
  location ^~/api/ {
    proxy_pass http://127.0.0.1:9999/;
    proxy_connect_timeout 60s;
    proxy_read_timeout 120s;
    proxy_send_timeout 120s;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto http;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    proxy_set_header from "";

    # 屏蔽敏感端点路径
    location ~ ^/api/(actuator|swagger-ui|v3/api-docs|swagger-resources|webjars|doc.html|druid) {
      return 403;
    }
  }
}

启动 Nginx:

# 启动 Nginx 服务
nginx

安全配置

安全必看

部署过程基于 PIGX 服务 2000+ 企业客户实践总结,以下安全配置务必严格执行:

  1. 正确配置安全组策略 生产环境仅对外开放 80 / 443 端口用于 UI 访问。端口随意暴露属于高危安全行为,大量安全事故(如 Redis 挖矿、Nacos 远程命令执行)几乎都源于不必要的端口开放。
  2. 严格按照本文 Nginx 配置 请直接参考并复制本文 Nginx 配置方案,不要自行修改。实际事故中,很多问题并非方案本身,而是被随意修改导致的配置错误。
  3. 生产环境关闭调试端点 Swagger、Actuator 仅用于开发调试场景,生产环境对外暴露将带来严重的信息泄露与安全风险,必须明确关闭。

关闭调试端点

在生产环境配置文件中关闭 Swagger 与 Actuator 端点:

  • 微服务版本:修改 nacos/application-dev.yml
  • 单体版本:修改 pigx-boot/application.yml
# 关闭管理端点
management:
  endpoints:
    enabled-by-default: false

# 关闭 Swagger 文档
springdoc:
  api-docs:
    enabled: false
部署完成

完成以上步骤后,通过浏览器访问服务器 IP 地址即可进入 PIGX 管理后台。